#ifndef ENUMERATIONS_H
#define	ENUMERATIONS_H

namespace Enums
{
	/* Contains definitations and enumerations related to General Purpose
	 * Input/Output (GPIO)
	 */
	namespace Gpio
	{

		/* List of all GPIO ports available on the PIC32MX795F512L MCU */
		enum class Ports
		{
			PortA,
			PortB,
			PortC,
			PortD,
			PortE,
			PortF,
			PortG
		};

		/* Contains definitations and enumerations for a GPIO Pin */
		namespace Pins
		{
			const UINT16 PinCountPerPort = 16;

			/* GPIO Pin Number */
			enum class Number
			{
				Pin0 = 0,
				Pin1 = 1,
				Pin2 = 2,
				Pin3 = 3,
				Pin4 = 4,
				Pin5 = 5,
				Pin6 = 6,
				Pin7 = 7,
				Pin8 = 8,
				Pin9 = 9,
				Pin10 = 10,
				Pin11 = 11,
				Pin12 = 12,
				Pin13 = 13,
				Pin14 = 14,
				Pin15 = 15
			};

			/* GPIO Pin Direction */
			enum class Direction
			{
				Input,
				Output
			};

			/* GPIO Pin Value */
			enum class Value
			{
				High,
				Low
			};
		}
	}
}
#endif	/* ENUMERATIONS_H */